--- channels/chan_sip.c.orig 2007-05-12 01:17:10.000000000 -0400 +++ channels/chan_sip.c 2007-05-12 01:33:02.000000000 -0400 @@ -802,8 +802,8 @@ #define SIP_PAGE2_T38SUPPORT_RTP (2 << 20) /*!< 21: T38 Fax Passthrough Support (not implemented) */ #define SIP_PAGE2_T38SUPPORT_TCP (4 << 20) /*!< 22: T38 Fax Passthrough Support (not implemented) */ #define SIP_PAGE2_CALL_ONHOLD (3 << 23) /*!< Call states */ -#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (1 << 23) /*!< 23: One directional hold */ -#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (1 << 24) /*!< 24: Inactive */ +#define SIP_PAGE2_CALL_ONHOLD_2DIR (1 << 23) /*!< 23: Two directional call */ +#define SIP_PAGE2_CALL_ONHOLD_ACTIVE (1 << 24) /*!< 24: Active */ #define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: Compensate for buggy RFC2833 implementations */ #define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< 26: Buggy CISCO MWI fix */ #define SIP_PAGE2_NOTEXT (1 << 27) /*!< 27: Text not supported */ @@ -5721,10 +5721,11 @@ p->owner->uniqueid); } if (sendonly == 1) /* One directional hold (sendonly/recvonly) */ - ast_set_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_ONEDIR); + ast_set_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD ^ SIP_PAGE2_CALL_ONHOLD_2DIR); else if (sendonly == 2) /* Inactive stream */ - ast_set_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_INACTIVE); - + ast_set_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD ^ SIP_PAGE2_CALL_ONHOLD_ACTIVE); + else + ast_set_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD); if (global_notifyhold) sip_peer_hold(p, TRUE); } @@ -6802,9 +6803,9 @@ snprintf(connection, sizeof(connection), "c=IN IP4 %s\r\n", ast_inet_ntoa(dest.sin_addr)); ast_build_string(&m_audio_next, &m_audio_left, "m=audio %d RTP/AVP", ntohs(dest.sin_port)); - if (ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_ONEDIR)) + if (!ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_2DIR)) hold = "a=recvonly\r\n"; - else if (ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_INACTIVE)) + else if (!ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD_ACTIVE)) hold = "a=inactive\r\n"; else hold = "a=sendrecv\r\n";